20. 重载函数
重载
现在,我们已经学习了如何创建一个类,并讨论了类所包含的一些基本函数和变量。接下来,让我们看点新的东西!
          双下划线
          
           __X__
          
         
         你已经看到了一些有双下划线的函数的例子,比如:
 __init__
__repr__它们是 特殊函数 ,在 Python 中有特定的使用方式。
          我们通常不会像调用
          
           move()
          
          和
          
           turn_left()
          
          一样直接调用这些函数。
         
相反,Python 会根据我们对关键字和运算符的使用 自动 调用这些函数。
          例如,当我们创建一个新的对象时会调用
          
           __init__
          
          ;当我们告诉 Python 输出一个特定的对象的字符串表示时会调用
          
           __repr__
          
          !
         
          另一个例子:
          
           __add__
          
         
         
          所有这些特殊函数的名字都写在两条下划线
          
           __
          
          之间,这种类型的函数有很多!要查看这些函数的完整列表,请查看
          
           Python 文档
          
          。
         
          例如,我们可以通过定义
          
           __add__
          
          函数来定义在使用 “+” 符号添加两个车辆对象时发生的情况。
         
def __add__(self, other):
    # Create an empty list
    added_state = []
    # Add the states together, element-wise
    for i in range(self.state):
        added_value = self.state[i] + other.state[i]
        added_state.append(added_value)
    return added_state上面的版本,把状态变量加在一起!或者…..你可以选择输出:添加汽车是一个无效的操作 ('adding cars is an invalid operation'),如下所示。
def __add__(self, other):
    # Print an error message and return the unchanged, first state
    print('Adding two cars is an invalid operation!')
    return self.state运算符重载
当我们在类中定义这些函数时,被称为 运算符重载 。
          在本例中,重载表示:为一个标准运算符
          
          
           赋予一个以上的意思
          
          。
         
运算符重载是一个强大的工具,它不仅会在我们的课堂上不断出现,但是对于编写直观易用的类很有用。所以,当你继续学习时,请务必记住这一点。下面, 我们来练习运算符重载吧!